class AuthenticationsController < ApplicationController
  def callback
    omniauth = request.env["omniauth.auth"]
    @auth    = Authentication.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])

    @authhash = Hash.new

    if ['google', 'facebook'].include? omniauth['provider']
        email      = omniauth['user_info']['email']
        first_name = omniauth['user_info']['first_name']
        last_name  = omniauth['user_info']['last_name']
    end

    if current_user
      if @auth.blank?
        current_user.authentications.create(:provider => omniauth['provider'], :uid => omniauth['uid'])
      else
        flash[:info] = "Takový účet už máte vytvořený."
      end
    elsif @auth
      flash[:notice] = "Byli jste úspěšně přihlášeni."
      UserSession.create(@auth.user, true)
    else
      unless email.blank?
        @check = User.find_by_email(email)

        if @check.blank?
          @authentication = Authentication.new(:provider => omniauth['provider'], :uid => omniauth['uid'])
          @authentication.user = User.new(:email => email)
          @authentication.user.user_info = UserInfo.new(:email => email, :name => first_name, :surname => last_name)
          @authentication.save(false)
          @authentication.user.reset_persistence_token!

          flash[:notice] = "Váš účet byl vytvořen."
          UserSession.create(@authentication.user, true)
        else
          flash[:error] = "Váš email je již registrován a přihlášení přes tuto službu nemáte povolenou."
        end
      else
        flash[:error] = "U vašeho účtu není zveřejněn Váš email, zkuste se přihlásit s jinou službou."
      end
    end
    redirect_to root_url
  end

  def failure
    flash[:error] = "Vaše autentikace se nezdařila."
    redirect_to root_url
  end

  def destroy
    @authentication = current_user.authentications.find(params[:id])
    @authentication.destroy
    
    flash[:notice] = "Autentikace byla úspěšně smazána."
    redirect_back_or_default user_path
  end
end
